﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ControleRepresentante.Logic.Models
{
    public class Vendedor : UsuariosHolder
    {
        private readonly IList<Cliente> m_Clientes;
        private readonly IList<Pedido> m_Pedidos;
        private readonly IList<RelatorioVisita> m_RelatorioVisitas;
        private int? m_NumeroDeClientes;

        public Vendedor()
        {
            m_Clientes = new List<Cliente>();
            m_Pedidos = new List<Pedido>();
            m_RelatorioVisitas = new List<RelatorioVisita>();
        }

        [Required(ErrorMessage = "*")]
        public virtual string Nome { get; set; }
        [DataType(DataType.Date, ErrorMessage = "*")]
        public virtual DateTime? Nascimento { get; set; }
        public virtual string CPF { get; set; }
        public virtual string Identidade { get; set; }
        [ScaffoldColumn(false)]
        public virtual IEnumerable<Cliente> Clientes { get { return m_Clientes; } }
        public virtual IEnumerable<Pedido> Pedidos { get { return m_Pedidos; } }
        public virtual IEnumerable<RelatorioVisita> RelatorioVisitas { get { return m_RelatorioVisitas; } }
        public virtual int NumeroDeClientes
        {
            get
            {
                if (!m_NumeroDeClientes.HasValue)
                {
                    m_NumeroDeClientes = m_Clientes.Count;
                }
                return m_NumeroDeClientes.Value;
            }
            set { m_NumeroDeClientes = value; }
        }
    }
}